/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estactrabajo;

import DataTypes.DataEvento;
import Objetos.PropiedadesIP;
import Proxies.CtrlUsuariosWS;
import Proxies.CtrlUsuariosWSService;
import Proxies.DataUsuario;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

/**
 *
 * @author Usuario
 */
public class Transformador {
    
    public Proxies.DataUsuario changeUsuario(DataTypes.DataUsuario du){
        
        
        
        DataUsuario datU = new DataUsuario();
        datU.setBloqueo(du.getBloqueo());
        datU.setCambioPass(du.isCambioPass());
        datU.setCiudad(du.getCiudad());
        datU.setContrasena(du.getContrasena());
        datU.setCorreo(du.getCorreo());
        datU.setImagen(du.getImagen());
        datU.setNick(du.getNick());
        datU.setNombre(du.getNombre());
        datU.setNotificar(du.isNotificar());
        datU.setPais(du.getPais());
        datU.setSexo(du.getSexo());
        datU.setNivelVisibilidad(du.getNivelVisibilidad());
     
        GregorianCalendar c = new GregorianCalendar();
        c.setTime(du.getFechaNac().getTime());
        try {
            XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
            datU.setFechaNac(date2);
        } catch (DatatypeConfigurationException ex) {
            Logger.getLogger(Transformador.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (du.getCalEventos()!=null) {
            Iterator<DataTypes.DataEvento> it = du.getCalEventos().values().iterator();

            DataUsuario.CalEventos calEven = new DataUsuario.CalEventos();


            while (it.hasNext()) {
                PropiedadesIP props = PropiedadesIP.getInstance();
                String IP = props.getServidorCentralIP();
                URL dirUsr = null;
                try {
                    dirUsr = new URL(IP + "CtrlUsuarios?wsdl");
                } catch (MalformedURLException ex) {
                    Logger.getLogger(Transformador.class.getName()).log(Level.SEVERE, null, ex);
                }
                QName qNaUsr = new QName("http://WebServices/", "CtrlUsuariosWSService");
                CtrlUsuariosWS ctrlUsr = new CtrlUsuariosWSService(dirUsr, qNaUsr).getCtrlUsuariosWSPort();
        
                DataEvento ev = it.next();
                Proxies.DataEvento pev = new Proxies.DataEvento();
                pev.setAutor(ctrlUsr.getUsuario(ev.getAutor().getCorreo()));
                pev.setNombre(ev.getNombre());
                pev.setRepetible(ev.isRepetible());
                pev.setTipo(ev.getTipo());
                GregorianCalendar cal = new GregorianCalendar();
                cal.setTime(ev.getFecha().getTime());
                try {
                    XMLGregorianCalendar date = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
                    pev.setFecha(date);
                } catch (DatatypeConfigurationException ex) {
                    Logger.getLogger(Transformador.class.getName()).log(Level.SEVERE, null, ex);
                }
                

                DataUsuario.CalEventos.Entry entr = new DataUsuario.CalEventos.Entry();

                entr.setKey(ev.getNombre());
                entr.setValue(pev);

                calEven.getEntry().add(entr);

            }
            datU.setCalEventos(calEven);

        }
        return datU;
    }

}
